package com.example.test.advice.第三章_类_对象_方法.建议40_匿名类的构造函数很特殊;

public class Calculator {
    private int i,j,result;
    //无参构造

    public Calculator() {
    }

    public Calculator(int i, int j) {
        this.i = i;
        this.j = j;
    }
    //设置符号，是加法运算还是减法运算
    protected void setOperator(Ops _ops){
        result = _ops.equals(Ops.ADD)?i+j:i-j;
    }

    //取得运算记过
    public int getResult(){

        return result;
    }

    public static void main(String[] args) {
        Calculator cl = new Calculator(1,2){//匿名内部类初始化时直接调用父类的同参构造
            {
                setOperator(Ops.ADD);
            }
        };

        System.out.println(cl.getResult());
    }

}

//等价做法
class Add extends Calculator{
    {
        setOperator(Ops.ADD);
    }

    public Add(int i,int j){
        super(i,j);
    }
}